package oop;

/**
 * 1. 实例方法和静态方法调用关系
 * 2. 构造方法和实例方法调用
 * 3. 构造方法和构造方法调用
 * 4. 方法自调用(递归调用)
 * @author: knowno
 * @create: 2025-09-10 16:02
 * @Version 1.0
 **/
public class TestMethod {
    //实例方法,实例方法之间可以相互调用
    public void show(){
        System.out.println(" instance method .");
        //能否调用静态方法,可以调用
        show2();
        //能否调用构造方法,不可以调用
        //TestMethod();
    }

    //构造方法
    TestMethod(){
        System.out.println(" constructor .");
        //可以调用实例方法
        show();
    }

    TestMethod(int a){
        //可以调用其他构造方法
        this();
        System.out.println(" constructor .");

    }

    //静态方法
    public static void show2(){
        System.out.println(" static method .");
        //能否调用实例方法,不可以调用
        //Non-static method 'show()' cannot be referenced from a static context
//        show();
    }

    public static void main(String[] args) {
        //Exception in thread "main" java.lang.StackOverflowError
        //递归调用,栈溢出,栈内存溢出
        main(null);
    }
}
